package beans;

import java.io.Serializable;
import java.util.Calendar;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;


@Entity
@Table(name= "RecepcionMercaderias")
public class RecepcionMercaderia implements Serializable
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 6344092120825794673L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO) 
	private int idRecepcion;
	
	@OneToOne (cascade=CascadeType.ALL)
	@JoinColumn(name="cuit")
	private Proveedor proveedor;
    
	@OneToOne (cascade=CascadeType.ALL)
	@JoinColumn(name="idProducto")
	private Producto producto;
	
	@Column (name="FechaRecepcion", nullable=false)
	private Calendar fechaRecepcion;
	
	@Column (name="DiferenciasPedido", nullable=false)
    private String diferenciasPedido;
	
	@OneToOne (cascade=CascadeType.ALL)
	@JoinColumn(name="idRemito")
    private Remito remito;
	
	public RecepcionMercaderia() {
			remito = new Remito();
			producto = new Producto();
			proveedor = new Proveedor();
	}
	
	
	
	
	
	
	

    public void decisionSegunDiferencias(String problema)
    {
    
    }
    
	public int getIdRecepcion() {
		return idRecepcion;
	}
	public void setIdRecepcion(int idRecepcion) {
		this.idRecepcion = idRecepcion;
	}
	public Proveedor getProveedor() {
		return proveedor;
	}
	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}
	public Producto getProducto() {
		return producto;
	}
	public void setProducto(Producto producto) {
		this.producto = producto;
	}
	public Calendar getFechaRecepcion() {
		return fechaRecepcion;
	}
	public void setFechaRecepcion(Calendar fechaRecepcion) {
		this.fechaRecepcion = fechaRecepcion;
	}
	public String getDiferenciasPedido() {
		return diferenciasPedido;
	}
	public void setDiferenciasPedido(String diferenciasPedido) {
		this.diferenciasPedido = diferenciasPedido;
	}
	public Remito getRemito() {
		return remito;
	}
	public void setRemito(Remito remito) {
		this.remito = remito;
	}


	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime
				* result
				+ ((diferenciasPedido == null) ? 0 : diferenciasPedido
						.hashCode());
		result = prime * result
				+ ((fechaRecepcion == null) ? 0 : fechaRecepcion.hashCode());
		result = prime * result + idRecepcion;
		result = prime * result
				+ ((producto == null) ? 0 : producto.hashCode());
		result = prime * result
				+ ((proveedor == null) ? 0 : proveedor.hashCode());
		result = prime * result + ((remito == null) ? 0 : remito.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		RecepcionMercaderia other = (RecepcionMercaderia) obj;
		if (diferenciasPedido == null) {
			if (other.diferenciasPedido != null)
				return false;
		} else if (!diferenciasPedido.equals(other.diferenciasPedido))
			return false;
		if (fechaRecepcion == null) {
			if (other.fechaRecepcion != null)
				return false;
		} else if (!fechaRecepcion.equals(other.fechaRecepcion))
			return false;
		if (idRecepcion != other.idRecepcion)
			return false;
		if (producto == null) {
			if (other.producto != null)
				return false;
		} else if (!producto.equals(other.producto))
			return false;
		if (proveedor == null) {
			if (other.proveedor != null)
				return false;
		} else if (!proveedor.equals(other.proveedor))
			return false;
		if (remito == null) {
			if (other.remito != null)
				return false;
		} else if (!remito.equals(other.remito))
			return false;
		return true;
	}
    
}
